package com.guomao.work;

import com.guomao.util.ConnectionUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

/**
 * 生产者类，用于向RabbitMQ队列发送消息
 */
public class Producer {

    // 定义队列名称常量
    public static final String QUEUE_NAME = "work_queue";

    /**
     * 主方法，程序入口
     * @param args 命令行参数
     * @throws Exception 可能抛出的异常
     */
    public static void main(String[] args) throws Exception {

        // 获取RabbitMQ连接
        Connection connection = ConnectionUtil.getConnection();

        // 创建通道
        Channel channel = connection.createChannel();

        // 声明队列，参数分别为：队列名称、是否持久化、是否独占、是否自动删除、额外参数
        channel.queueDeclare(QUEUE_NAME, true, false, false, null);

        // 循环发送10条消息
        for (int i = 1; i <= 10; i++) {

            // 构建消息内容
            String body = i + "hello rabbitmq~~~";

            // 发送消息，参数分别为：交换机名称、路由键、消息属性、消息体
            channel.basicPublish("", QUEUE_NAME, null, body.getBytes());

        }

        // 关闭通道
        channel.close();

        // 关闭连接
        connection.close();

    }

}